package com.resifind.www.service;

import com.resifind.www.exception.Resp;
import com.resifind.www.po.Room;
import com.resifind.www.po.RoomNumber;

import java.util.List;

/**
 * @author 36069
 */
public interface RoomService {

    /**
     * 查询商家房型信息
     *
     * @param merchantId 商家id
     * @return 返回商家房型集合
     */
    Resp<List<Room>> queryRoomByMerchantId(int merchantId);

    /**
     * 修改房型信息
     *
     * @param room 房型对象
     * @return 返回修改结果
     */
    Resp<String> updateRoom(Room room);

    /**
     * 删除房型
     * <p>
     * 删除前判断是否有不合条件的订单，有则不能删除
     * </p>
     *
     * @param roomId 房型id
     * @return 返回删除结果
     */
    Resp<String> deleteRoom(int roomId);

    /**
     * 添加房型
     * <p>
     * 校验价格是否合法
     * </p>
     *
     * @param merchantId 商家id
     * @param room       房型对象
     * @return 返回添加结果
     */
    Resp<String> addRoom(int merchantId, Room room);

    /**
     * 添加房间号
     * <p>
     * 校验房间号是否为空
     * </p>
     *
     * @param roomId  房型id
     * @param numbers 房间号字符串数组
     * @return 返回添加结果
     */
    Resp<String> addRoomNumbers(int roomId, String numbers);

    /**
     * 查询房间号
     *
     * @param roomId 房型id
     * @return 返回房间号集合
     */
    Resp<List<RoomNumber>> queryRoomNumberByRoomId(int roomId);

    /**
     * 切换房间号状态
     * <p>
     * 若房间号已被订单占用，则不能切换为可用
     * </p>
     *
     * @param roomNumberId 房间号id
     * @return 返回切换结果
     */
    Resp<String> switchRoomNumberStatus(int roomNumberId);

    /**
     * 删除房间号
     * <p>
     * 若房间号存在不合法的订单，则不能删除
     * </p>
     *
     * @param roomNumberId 房间号id
     * @return 返回删除结果
     */
    Resp<String> deleteRoomNumber(int roomNumberId);
}
